from ._builtin import Page, WaitPage from otree.api import Currency as c, currency_range from .models import Constants #class Introduction(Page): #timeout_seconds = 100 class Decision_guess(Page): def is_displayed(self): return self.round_number in [1,5] form_model = 'player' form_fields = ['decision_guess'] def before_next_page(self): if self.round_number == 1: self.participant.vars['decision_guess_r1'] = self.player.decision_guess self.player.decision_guess_r1 = str(self.participant.vars['decision_guess_r1']) elif self.round_number == 5: self.participant.vars['decision_guess_r5'] = self.player.decision_guess self.player.decision_guess_r5 = str(self.participant.vars['decision_guess_r5']) else: pass class Decision(Page): form_model = 'player' form_fields = ['decision'] def before_next_page(self): if self.round_number==1: if self.player.decision == 1: self.participant.vars['decision_r1'] = int(1) self.participant.vars['decision_type_r1'] = str("Cooperate") else: self.participant.vars['decision_r1'] = int(0) self.participant.vars['decision_type_r1'] = str("Defect") # payoff_r1 = self.player.payoff # self.player.participant.vars['payoff_r1'] = self.player.payoff_r1 # self.player.payoff_r1 = int(self.player.participant.vars['payoff_r1']) self.player.decision_r1 = int(self.participant.vars['decision_r1']) self.player.decision_type = str(self.participant.vars['decision_type_r1']) print(self.participant.vars) elif self.round_number==2: if self.player.decision == 1: self.participant.vars['decision_r2'] = int(1) self.participant.vars['decision_type_r2'] = str("Cooperate") else: self.participant.vars['decision_r2'] = int(0) self.participant.vars['decision_type_r2'] = str("Defect") # payoff_r2 = self.player.payoff # self.player.participant.vars['payoff_r2'] = self.player.payoff_r2 self.player.decision_r2 = int(self.participant.vars['decision_r2']) self.player.decision_type = str(self.participant.vars['decision_type_r2']) elif self.round_number==3: if self.player.decision == 1: self.participant.vars['decision_r3'] = int(1) self.participant.vars['decision_type_r3'] = str("Cooperate") else: self.participant.vars['decision_r3'] = int(0) self.participant.vars['decision_type_r3'] = str("Defect") # payoff_r3 = self.player.payoff # self.player.participant.vars['payoff_r3'] = self.player.payoff_r3 self.player.decision_r3 = int(self.participant.vars['decision_r3']) self.player.decision_type = str(self.participant.vars['decision_type_r3']) elif self.round_number==4: if self.player.decision == 1: self.participant.vars['decision_r4'] = int(1) self.participant.vars['decision_type_r4'] = str("Cooperate") else: self.participant.vars['decision_r4'] = int(0) self.participant.vars['decision_type_r4'] = str("Defect") # payoff_r4 = self.player.payoff # self.player.participant.vars['payoff_r3'] = self.player.payoff_r3 self.player.decision_r4 = int(self.participant.vars['decision_r4']) self.player.decision_type = str(self.participant.vars['decision_type_r4']) else: if self.player.decision == 1: self.participant.vars['decision_r5'] = int(1) self.participant.vars['decision_type_r5'] = str("Cooperate") else: self.participant.vars['decision_r5'] = int(0) self.participant.vars['decision_type_r5'] = str("Defect") # payoff_r5 = self.player.payoff # self.player.participant.vars['payoff_r5'] = self.player.payoff_r5 self.player.decision_r5 = int(self.participant.vars['decision_r5']) self.player.decision_type = str(self.participant.vars['decision_type_r5']) class ResultsWaitPage1(WaitPage): after_all_players_arrive = 'set_payoffs' # class ResultsWaitPage2(WaitPage): # after_all_players_arrive = 'set_cooprates' class ResultsWaitPage2(WaitPage): wait_for_all_groups = True class Results(Page): def vars_for_template(self): me = self.player opponent = me.other_player() return dict( my_decision=me.decision_type, opponent_decision=opponent.decision_type, same_choice=me.decision_type == opponent.decision_type, ) def before_next_page(self): if self.round_number==1: self.player.participant.vars['payoff_r1_int'] = int(self.player.payoff_int) #self.player.participant.vars['cooprate_r1'] = int(self.player.cooprate_r1) #self.player.participant.vars['cooprate_r1'] = self.player.cooprate_r1 #self.player.participant.vars['totalcoop_r1'] = self.group.total_coop self.player.total_coop_s1 = sum([p.decision for p in self.subsession.get_players() if p.role() == '1']) self.player.total_coop_s2 = sum([p.decision for p in self.subsession.get_players() if p.role() == '2']) self.player.coop_rate_s1 = int(self.player.total_coop_s1/Constants.players_per_supergroup*100) self.player.coop_rate_s2 = int(self.player.total_coop_s2/Constants.players_per_supergroup*100) if self.player.supergroup == '1': self.participant.vars['total_coop_r1'] = self.player.total_coop_s1 self.player.participant.vars['cooprate_r1'] = self.player.coop_rate_s1 if self.player.supergroup == '2': self.player.participant.vars['cooprate_r1'] = self.player.coop_rate_s2 self.participant.vars['total_coop_r1'] = self.player.total_coop_s2 self.player.cooprate_r1 = self.player.participant.vars['cooprate_r1'] print(self.participant.vars) elif self.round_number == 2: self.player.participant.vars['payoff_r2_int'] = int(self.player.payoff_int) self.player.total_coop_s1 = sum([p.decision for p in self.subsession.get_players() if p.role() == '1']) self.player.total_coop_s2 = sum([p.decision for p in self.subsession.get_players() if p.role() == '2']) self.player.coop_rate_s1 = int(self.player.total_coop_s1 / Constants.players_per_supergroup * 100) self.player.coop_rate_s2 = int(self.player.total_coop_s2 / Constants.players_per_supergroup * 100) if self.player.supergroup == '1': self.participant.vars['total_coop_r2'] = self.player.total_coop_s1 self.player.participant.vars['cooprate_r2'] = self.player.coop_rate_s1 if self.player.supergroup == '2': self.player.participant.vars['cooprate_r2'] = self.player.coop_rate_s2 self.participant.vars['total_coop_r2'] = self.player.total_coop_s2 self.player.cooprate_r2 = self.player.participant.vars['cooprate_r2'] elif self.round_number == 3: self.player.participant.vars['payoff_r3_int'] = int(self.player.payoff_int) self.player.total_coop_s1 = sum([p.decision for p in self.subsession.get_players() if p.role() == '1']) self.player.total_coop_s2 = sum([p.decision for p in self.subsession.get_players() if p.role() == '2']) self.player.coop_rate_s1 = int(self.player.total_coop_s1 / Constants.players_per_supergroup * 100) self.player.coop_rate_s2 = int(self.player.total_coop_s2 / Constants.players_per_supergroup * 100) if self.player.supergroup == '1': self.participant.vars['total_coop_r3'] = self.player.total_coop_s1 self.player.participant.vars['cooprate_r3'] = self.player.coop_rate_s1 if self.player.supergroup == '2': self.player.participant.vars['cooprate_r3'] = self.player.coop_rate_s2 self.participant.vars['total_coop_r3'] = self.player.total_coop_s2 self.player.cooprate_r3 = self.player.participant.vars['cooprate_r3'] elif self.round_number == 4: self.player.participant.vars['payoff_r4_int'] = int(self.player.payoff_int) self.player.total_coop_s1 = sum([p.decision for p in self.subsession.get_players() if p.role() == '1']) self.player.total_coop_s2 = sum([p.decision for p in self.subsession.get_players() if p.role() == '2']) self.player.coop_rate_s1 = int(self.player.total_coop_s1 / Constants.players_per_supergroup * 100) self.player.coop_rate_s2 = int(self.player.total_coop_s2 / Constants.players_per_supergroup * 100) if self.player.supergroup == '1': self.participant.vars['total_coop_r4'] = self.player.total_coop_s1 self.player.participant.vars['cooprate_r4'] = self.player.coop_rate_s1 if self.player.supergroup == '2': self.player.participant.vars['cooprate_r4'] = self.player.coop_rate_s2 self.participant.vars['total_coop_r4'] = self.player.total_coop_s2 self.player.cooprate_r4 = self.player.participant.vars['cooprate_r4'] else: self.player.participant.vars['payoff_r5_int'] = int(self.player.payoff_int) self.player.total_coop_s1 = sum([p.decision for p in self.subsession.get_players() if p.role() == '1']) self.player.total_coop_s2 = sum([p.decision for p in self.subsession.get_players() if p.role() == '2']) self.player.coop_rate_s1 = int(self.player.total_coop_s1 / Constants.players_per_supergroup * 100) self.player.coop_rate_s2 = int(self.player.total_coop_s2 / Constants.players_per_supergroup * 100) if self.player.supergroup == '1': self.participant.vars['total_coop_r5'] = self.player.total_coop_s1 self.player.participant.vars['cooprate_r5'] = self.player.coop_rate_s1 if self.player.supergroup == '2': self.player.participant.vars['cooprate_r5'] = self.player.coop_rate_s2 self.participant.vars['total_coop_r5'] = self.player.total_coop_s2 self.player.cooprate_r5 = self.player.participant.vars['cooprate_r5'] print(self.participant.vars) page_sequence = [ Decision_guess, Decision, ResultsWaitPage1, ResultsWaitPage2, Results ]